package pl.edu.pk.psb.validator;

import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;

import pl.edu.pk.psb.bc.util.DataUtil;
import pl.edu.pk.psb.command.WyszukiwarkaWydarzenCommand;

@Component
public class WyszukiwarkaWydarzenValidator extends OgolnyValidator implements Validator {

	@Override
	public void validate(Object target, Errors bledy) {
		WyszukiwarkaWydarzenCommand command = (WyszukiwarkaWydarzenCommand)target;
		if(StringUtils.isNotBlank(command.getNazwaOpis()) && !czyPoprawnyString(command.getNazwaOpis(), true)){
			bledy.rejectValue("nazwaOpis", "walidacja.niepoprawnaWartosc");
		}
		if(StringUtils.isNotBlank(command.getDataOd()) && !DataUtil.czyDataPoprawna(command.getDataOd())){
			bledy.rejectValue("dataOd", "walidacja.zlaData");
		}
		if(StringUtils.isNotBlank(command.getDataDo()) && !DataUtil.czyDataPoprawna(command.getDataDo())){
			bledy.rejectValue("dataDo", "walidacja.zlaData");
		}
		if(StringUtils.isNotBlank(command.getMiasto()) && !czyPoprawnyString(command.getMiasto(), true)){
			bledy.rejectValue("miasto", "walidacja.niepoprawnaWartosc");
		}
		if(StringUtils.isNotBlank(command.getCenaNormalnaOd()) && !czyLiczbaZmiennoprzecinkowaDodatnia(command.getCenaNormalnaOd())){
			bledy.rejectValue("cenaNormalnaOd", "walidacja.zlaCena");
		}
		if(StringUtils.isNotBlank(command.getCenaNormalnaDo()) && !czyLiczbaZmiennoprzecinkowaDodatnia(command.getCenaNormalnaDo())){
			bledy.rejectValue("cenaNormalnaDo", "walidacja.zlaCena");
		}
		if(StringUtils.isNotBlank(command.getCenaUlgowaOd()) && !czyLiczbaZmiennoprzecinkowaDodatnia(command.getCenaUlgowaOd())){
			bledy.rejectValue("cenaUlgowaOd", "walidacja.zlaCena");
		}
		if(StringUtils.isNotBlank(command.getCenaUlgowaDo()) && !czyLiczbaZmiennoprzecinkowaDodatnia(command.getCenaUlgowaDo())){
			bledy.rejectValue("cenaUlgowaDo", "walidacja.zlaCena");
		}
		
	}
	@Override
	public boolean supports(Class<?> klasa) {
		return WyszukiwarkaWydarzenCommand.class.isAssignableFrom(klasa);
	}

}
